namespace Sustainalytics.DataLayer.EsgRatings
{
    using System;
    using System.Collections.Generic;
    using System.Linq.Expressions;

    using Sustainalytics.Entities.ESGRatings;

    public interface IEsgInputFileRepository
    {
        void AddFile(EsgInputFileComplete esgInputFile);

        void DeleteFiles(EsgInputFileType fileType, string name, Guid accountId);

        IList<EsgInputFileComplete> ReadEsgInputFilesByAccountId(EsgInputFileType fileType, Guid? accountId);
        
        IList<EsgInputFileComplete> ListLatestUnprocessedFiles(EsgInputFileType fileType);

        void MarkFileAsProcessed(Guid fileId);

        EsgInputFileComplete GetESGFilesByFilter(Expression<Func<EsgInputFile, bool>> wherePredicate);
    }
}
